Field of the Invention
The present invention relates to application performance testing and more particularly to workload simulation for application performance testing.
Description of the Related Art
In software engineering, performance testing determines how fast some aspect of a computing system performs under a particular collection of workloads. Performance testing also validates and verifies other attributes of the computing system, for example the scalability, reliability and resource usage of the computing system. Importantly, in some circumstances, performance testing of a computing system is intended demonstrate that the computing system meets particular performance criteria, oftentimes specified by the end user. In other circumstances, performance testing measures those segments of the computing system causing the computing system to perform poorly. In the latter circumstance, profiling tools identify portions of the computing system contributing most to the poor performance.
Workload simulation forms an integral part of performance testing. In workload simulation, different workloads are generated and subjected upon a computing system, in order to simulate the conditions under which the computing system will operate. To ensure precision in simulation, a workload simulation often is constructed statically. To facilitate the construction of a workload simulation scenario, the operation of the computing application can be recorded according to a scripted set of stimuli to the application. Subsequently, the recorded operation of the computing application can be played back and the performance of the computing application measured. Of note, graphical tools have been developed to permit the graphical editing of workloads to be used in workload simulation.
Workload simulation has proven highly effective for performance testing distributed applications—particularly Web applications involving a thin Web client. However, the resurgence of the rich client now permits substantially more complex workload processing and has complicated workload simulation using the traditional record-and-playback method. In this regard, a rich client can handle multiple different tasks at the same time and each task can generate a multiplicity of requests in sequence. The tasks can execute independently of one another or in collaboration with one another. The tasks also can execute concurrently. From the viewpoint of a workload simulation, however, the requests of the different tasks are merely intermixed with one another without respect to an originating task.
Traditionally, to address the intermixing of requests from different tasks in a client, loops are created to include selected requests in order to ensure that the selected requests are satisfied before subsequent requests are permitted to originate in the client. To establish loops during workload simulation, though, is to create an artificial ordering of the generation of the requests. Of course, the use of loops during workload simulation necessarily prevents concurrency of execution of tasks in the client, thereby defeating the integrity of the workload simulation.